import { message } from 'antd'
import dayjs from 'dayjs'

// --------------------------------------------------- 页面跳转函数 ---------------------------------------------------
/**
 * 页面跳转
 * @param url 要跳到的页面 url
 */
export const pageSkip = (url: string) => window.location.replace('/#' + url)

// --------------------------------------------------- 复制内容到剪切板, 成功返回true ---------------------------------------------------
/**
 * 复制内容到剪切板
 * @param text 要复制的内容
 * @returns 是否复制成功
 */
export function copyString(text: string) {
  if (!text) return false
  let dom = document.createElement('input')
  dom.value = text
  document.body.appendChild(dom)
  dom.select() // 选择对象
  document.execCommand('Copy') // 执行浏览器复制命令
  document.body.removeChild(dom)
  message.success('内容已经复制到剪切板')
  return true
}

// --------------------------------------------------- time 格式化 ---------------------------------------------------
/**
 * 日期格式化函数
 * @param form 日期格式化格式, 详情参考 dayjs 的 format 方法
 * @param date 日期, 可不传, 不穿则为当前日期
 * @returns 格式化后的日期
 */
export function timeFormat(form: string, date: any = '') {
  if (date !== '') return dayjs(date).format(form)
  else return dayjs().format(form)
}

/**
 * 监听元素宽高变化
 * @param ele 监测的元素
 * @param callback 元素宽高变化时的回调
 */
export const observeSizeChange = (ele: Element | null, callback: (entries: ResizeObserverEntry[], observer: ResizeObserver) => void) => {
  const re = new ResizeObserver(callback)
  re.disconnect() // 取消该元素上的所有监听
  if (ele) re.observe(ele) // 创建监听
}
